#include <iostream>
#include <cstring>
using namespace std;
const int N=2*1e4+10;

int h[N],ne[N],to[N],w[N],idx;
int n;
int ret;

void add(int x,int y,int c)
{
	to[idx]=y;
	w[idx]=c;
	ne[idx]=h[x];
	h[x]=idx++;
}
int dfs(int u,int fa)
{
	int dist=0;
	int d1=0,d2=0;
	for(int i=h[u];i!=-1;i=ne[i])
	{
		if(to[i]==fa)
			continue;
		int d=dfs(to[i],u)+w[i];
		dist=max(dist,d);
		if(d>d1)
		{
			d2=d1;
			d1=d;
		}
		else if(d>d2)
		{
			d2=d;
		}
	}
	ret=max(ret,d1+d2);
	return dist;
	
	
}
int main()
{
	cin>>n;
	memset(h,-1,sizeof(h));
	for(int i=1;i<n;i++)
	{
		int a,b,c;
		scanf("%d%d%d",&a,&b,&c);
		
		add(a,b,c);
		add(b,a,c);
	}
	
	dfs(1,-1);
	
	cout<<ret<<endl;
	
	return 0;
}
